
#ifndef __display_h
#define __display_h

//HAL------------------------------
/* 数码管是共阴驱动，要置1才能亮
com口是低电平有效的，要置0才能驱动
LED是共阳的，要置0才能亮 */
#define setcom1		P1_0=1 ;
#define setcom2		P1_1=1 ;
#define setcom3		P1_2=1 ;
#define setcom4		P1_3=1 ;
#define setcom5		P1_4=1 ;
#define setcom6		P1_6=1 ;
#define setcom7		P1_7=1 ;
#define setcom8 	P0_0=1 ;
                          
#define clrcom1		P1_0=0 ;
#define clrcom2     P1_1=0 ;
#define clrcom3     P1_2=0 ;
#define clrcom4     P1_3=0 ;
#define clrcom5     P1_4=0 ;
#define clrcom6     P1_6=0 ;
#define clrcom7     P1_7=0 ;
#define clrcom8 	P0_0=0 ;
                        
#define setseg1  	P3_6=1 ;
#define setseg2		P3_2=1 ;
#define setseg3		P2_1=1 ;
#define setseg4		P0_2=1 ;
#define setseg5		P0_3=1 ;
#define setseg6		P0_4=1 ;
#define setseg7		P0_5=1 ;
#define setseg8		P0_6=1 ;
                        
#define clrseg1  	P3_6=0 ;
#define clrseg2		P3_2=0 ;
#define clrseg3		P2_1=0 ;
#define clrseg4		P0_2=0 ;
#define clrseg5		P0_3=0 ;
#define clrseg6		P0_4=0 ;
#define clrseg7		P0_5=0 ;
#define clrseg8		P0_6=0 ;

#define setsegOther1 	P0_7=1;
#define setsegOther2 	P0_1=1;
#define clrsegOther1 	P0_7=0;
#define clrsegOther2 	P0_1=0;

#define setOther1		setsegOther1;clrcom8;
#define setOther2		setsegOther2;clrcom8;

#define F_lockDisplay()		setcom1 ;\
                            setcom2 ;\
                            setcom3 ;\
                            setcom4 ;\
                            setcom5 ;\
                            setcom6 ;\
                            setcom7 ;\
                            setcom8 ;\
							clrseg1 ;\
							clrseg2	;\
							clrseg3	;\
							clrseg4	;\
							clrseg5	;\
							clrseg6	;\
							clrseg7	;\
                            clrseg8	;\
							clrsegOther1;\
                            clrsegOther2;


#define setShaoShui 				displayBuffer[7] |=b0000_0010;	
#define setKuaiDun  				displayBuffer[7] |=b0000_0001;		
#define setManDun   				displayBuffer[6] |=b0000_0001;	
#define setYanWo					displayBuffer[6] |=b1000_0000;	
#define setYuJiao					displayBuffer[6] |=b0100_0000;	
#define setSuanNai				displayBuffer[7] |=b1000_0000;	
#define setHuaCha				displayBuffer[7] |=b0100_0000;	
#define setYangShengTang	displayBuffer[7] |=b0010_0000;	
#define setShuiGuoCha			displayBuffer[7] |=b0001_0000;	
#define setBaoWen				displayBuffer[5] |=b1100_0000;	
#define setZhuDan				displayBuffer[7] |=b0000_1000;	
#define setYaoShan				displayBuffer[7] |=b0000_0100;

#define setCurTempFlag			displayBuffer[6] |=b0010_0000;
#define clrCurTempFlag			displayBuffer[6] &=b1101_1111;
	
#define setClockFlag         	displayBuffer[4] |=b1000_0000;
#define clrClockFlag         	displayBuffer[4] &=b0111_1111;


#define setDianYuan				displayBuffer[6] |=b0000_1000;
#define clrDianYuan				displayBuffer[6] &=b1111_0111;

#define setYuYue					displayBuffer[6] |=b0000_0100;
#define clrYuYue                    displayBuffer[6] &=b1111_1011;

#define setcycle1				displayBuffer[5] |=b0010_0100;
#define setcycle2				displayBuffer[5] |=b0001_0010;
#define setcycle3				displayBuffer[5] |=b0000_1001;
#define setcycle4				displayBuffer[5] &=b1100_0000;


#define clrAllFunciton  			displayBuffer[7] &=b0000_0000;displayBuffer[6] &=b0011_1110;displayBuffer[5] &=b0011_1111;\
																			
// #define setShaoShui 	setb7;		
// #define setKuaiDun  	seta7;
// #define setManDun   		seta6;
// #define setYanWo			setz1;setz2;
// #define setYuJiao			setg6;
// #define setSuanNai			seth7;
// #define setHuaCha			setg7;
// #define setYangShengTang	setf7;
// #define setShuiGuoCha		sete7;
// #define setBaoWen			seth5;setg5;
// #define setZhuDan			setd3;
// #define setYaoShan			setc7;

#define D_fontBar  0X40      //0100 0000                 
#define D_fontBlank    0X00  //0000 0000
#define D_fontE    0x4F      //0100 1111
#define D_font0    0x3F      //0011 1111
#define D_font1    0x30      //0011 0000
#define D_font8	0x7F ;        //0111 1111

                                               
#define D_DisplayBufferSize 9
//Var------------------------------
#ifdef __display_c
uint8_t data displayBuffer[D_DisplayBufferSize] ;
uint8_t data dspIndexShow;
#else
extern uint8_t data displayBuffer[D_DisplayBufferSize] ;
extern uint8_t data dspIndexShow;


#endif
//Function----------------------------
void DisplayScan(void) ;//
void DisplayNumber(uint16_t number) ;
void SetComs(uint8_t dsp);
void DisplayTime(uint16_t number);
//#define 时，可以用 “\” 来把定义分成两行
#define F_displayAdShort()   displayBuffer[4] = D_fontBlank ;  displayBuffer[2] =   0x79 ; \
                             displayBuffer[3] = 0x5b  ;     displayBuffer[1] = D_fontBlank ; \
									displayBuffer[5] = 0xff; displayBuffer[6] = 0xff ; \
                           displayBuffer[8] = 0xff ; displayBuffer[7] = 0xff ;							 
//当ad短路的时候，数码管显示  E0
#define F_displayAdOff()     displayBuffer[4] = D_fontBlank ;  displayBuffer[2] =   0x79 ; \
                            displayBuffer[3] = D_font1  ;  displayBuffer[1] = D_fontBlank ;    
//当ad开路的时候，数码管显示 E1
#define F_displayPowerOff()   displayBuffer[3] = D_fontBar ; displayBuffer[2] = D_fontBar ; \
							displayBuffer[1] = D_fontBar
//当上电，没有按powner建时，显示   ---                           
#define F_displayAll()    displayBuffer[1] = 0xff; displayBuffer[2] = 0xff ; \
                           displayBuffer[4] = 0xff ; displayBuffer[3] = 0xff ;\
						   displayBuffer[5] = 0xff; displayBuffer[6] = 0xff ; \
                           displayBuffer[8] = 0xff ; displayBuffer[7] = 0xff ;
						   
						   
//没有数码管点的io口，所以无法点亮													 
//一上电的时候，自检显示 888
#define F_displayClrAll()     displayBuffer[1] = 0x00; displayBuffer[2] = 0x00 ; \
						       displayBuffer[4] = 0x00 ; displayBuffer[3] = 0x00 ;\
						       displayBuffer[5] = 0x00; displayBuffer[6] = 0x00 ; \
						       displayBuffer[8] = 0x00 ; displayBuffer[7] = 0x00 ;
						   
//全部数码管清空
#define F_clrAllLed()		displayBuffer[0] = D_fontBlank;
//led全部清零                                                                                             
                                                            
                                                            
                            
      

                          							 
#endif


// #ifndef __display_h
// #define __display_h



// #define  bit1           0x01
// #define  bit2           0x02
// #define  bit3           0x04
// #define  bit4           0x08
// #define  bit5           0x10
// #define  bit6           0x20
// #define  bit7           0x40
// #define  bit8           0x80

// #define  cbit1           b1111_1110
// #define  cbit2           b1111_1101
// #define  cbit3           b1111_1011
// #define  cbit4           b1111_0111
// #define  cbit5           b1110_1111
// #define  cbit6           b1101_1111
// #define  cbit7           b1011_1111
// #define  cbit8           b0111_1111

// #define setcom1		P1_0=1;
// #define setcom2		P1_1=1;
// #define setcom3		P1_2=1;
// #define setcom4		P1_3=1;
// #define setcom5		P1_4=1;
// #define setcom6		P1_6=1;
// #define setcom7		P1_7=1;
// #define setcom8 	P0_0=1;

// #define clrcom1		P1_0=0;
// #define clrcom2     P1_1=0;
// #define clrcom3     P1_2=0;
// #define clrcom4     P1_3=0;
// #define clrcom5     P1_4=0;
// #define clrcom6     P1_6=0;
// #define clrcom7     P1_7=0;
// #define clrcom8 	P0_0=0;




// #define setseg1  	P3_6=1;
// #define setseg2		P3_2=1;
// #define setseg3		P2_1=1;
// #define setseg4		P0_2=1;
// #define setseg5		P0_3=1;
// #define setseg6		P0_3=1;
// #define setseg7		P0_5=1;
// #define setseg8		P0_6=1;


// #define clrseg1  	P3_6=0;
// #define clrseg2		P3_2=0;
// #define clrseg3		P2_1=0;
// #define clrseg4		P0_2=0;
// #define clrseg5		P0_3=0;
// #define clrseg6		P0_3=0;
// #define clrseg7		P0_5=0;
// #define clrseg8		P0_6=0;


	
// #define setsegOther1 	P0_7=1;
// #define setsegOther2 	P0_1=1;
// #define clrsegOther1 	P0_7=0;
// #define clrsegOther2 	P0_1=0;



	 


// #define seta1   clrcom1;setseg1;
// #define seta2   clrcom2;setseg1;
// #define seta3   clrcom3;setseg1;
// #define seta4   clrcom4;setseg1;
// #define seta5   clrcom5;setseg1;
// #define seta6   clrcom6;setseg1;
// #define seta7   clrcom7;setseg1;


// #define setb1   clrcom1;setseg2;
// #define setb2   clrcom2;setseg2;
// #define setb3   clrcom3;setseg2;
// #define setb4   clrcom4;setseg2;
// #define setb5   clrcom5;setseg2;
// #define setb6   clrcom6;setseg2;
// #define setb7   clrcom7;setseg2;

// #define setc1   clrcom1;setseg3;
// #define setc2   clrcom2;setseg3;
// #define setc3   clrcom3;setseg3;
// #define setc4   clrcom4;setseg3;
// #define setc5   clrcom5;setseg3;
// #define setc6   clrcom6;setseg3;
// #define setc7   clrcom7;setseg3;


// #define setd1   clrcom1;setseg4;
// #define setd2   clrcom2;setseg4;
// #define setd3   clrcom3;setseg4;
// #define setd4   clrcom4;setseg4;
// #define setd5   clrcom5;setseg4;
// #define setd6   clrcom6;setseg4;
// #define setd7   clrcom7;setseg4;

// #define sete1   clrcom1;setseg5;
// #define sete2   clrcom2;setseg5;
// #define sete3   clrcom3;setseg5;
// #define sete4   clrcom4;setseg5;
// #define sete5   clrcom5;setseg5;
// #define sete6   clrcom6;setseg5;
// #define sete7   clrcom7;setseg5;

// #define setf1   clrcom1;setseg6;
// #define setf2   clrcom2;setseg6;
// #define setf3   clrcom3;setseg6;
// #define setf4   clrcom4;setseg6;
// #define setf5   clrcom5;setseg6;
// #define setf6   clrcom6;setseg6;
// #define setf7   clrcom7;setseg6;

// #define setg1   clrcom1;setseg7;
// #define setg2   clrcom2;setseg7;
// #define setg3   clrcom3;setseg7;
// #define setg4   clrcom4;setseg7;
// #define setg5   clrcom5;setseg7;
// #define setg6   clrcom6;setseg7;
// #define setg7   clrcom7;setseg7;

// #define setdp1	 clrcom1;setseg8;
// #define setdp2   clrcom2;setseg8;
// #define setdp3   clrcom3;setseg8;
// #define setdp4   clrcom4;setseg8;
// #define seth5	clrcom5;setseg8;
// #define seth7   clrcom7;setseg8;


// #define setz1 clrcom8;setsegOther1;
// #define setz2 clrcom8;setsegOther2;

// #define setCurTempFlag setf6;
// #define setDianYuan    setd6;
// #define setYuYueFlag       setc6;
// #define setClockFlag     setdp4;




// #ifdef __display_c

// uint8_t    displayBuffer[16] ;

// uint8_t    bdata    d_seg;
// sbit    f_seg_a=d_seg^0;
// sbit    f_seg_b=d_seg^1;
// sbit    f_seg_c=d_seg^2;
// sbit    f_seg_d=d_seg^3;
// sbit    f_seg_e=d_seg^4;
// sbit    f_seg_f=d_seg^5;
// sbit    f_seg_g=d_seg^6;
// sbit    f_seg_h=d_seg^7;

// uint8_t curTempH;
// uint8_t curTempL;
// uint8_t setTempH;
// uint8_t setTempL;
// uint8_t gear;
// uint8_t clockHourH;
// uint8_t clockHourL;
// uint8_t clockMinH;
// uint8_t clockMinL;
// bit		bCurTemp;
// bit bYuYue;
// code const uint8_t displayFonts[10];
// uint8_t mainClockHour;
// uint8_t mainClockMin;
// #else
// extern uint8_t mainClockHour;
// extern uint8_t mainClockMin;
// extern bit		bCurTemp;
// extern bit bYuYue;
// extern code const uint8_t displayFonts[10];
// extern 	uint8_t curTempH;
// extern uint8_t curTempL;
// extern uint8_t setTempH;
// extern uint8_t setTempL;
// extern uint8_t gear;
// extern uint8_t clockHourH;
// extern uint8_t clockHourL;
// extern uint8_t clockMinH;
// extern uint8_t clockMinL;

// extern uint8_t displayBuffer[16] ;

// extern uint8_t    bdata    d_seg;

// #endif

// void		DisplayScan();
// #endif
